class OrdenServiciosController < ApplicationController
  # GET /orden_servicios
  # GET /orden_servicios.xml
  require 'prawn'
  require "open-uri"
  def index
    @orden_servicios = OrdenServicio.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @orden_servicios }
    end
  end

  # GET /orden_servicios/1
  # GET /orden_servicios/1.xml
  # GET /orden_servicios/1.pdf
  def show
  	@ip = obtencionip
    @orden_servicio = OrdenServicio.find(params[:id])
    @qr = "http://chart.apis.google.com/chart?chs=220x220&cht=qr&chl=http://" + @ip + ":3000/generadorxml/generadorxml/" + @orden_servicio.id.to_s
    #    @paquete = Paquete.where(:orden_servicio_id => @paquete.id)
    #    @compania = Compania.find_by_sql("select c.id, c.nombre, c.rif, c.direccion, c.telefono from companias c where c.nombre = 'GGNexpress'")
    @paquete = Paquete.all(:conditions => {:orden_servicio_id =>  @orden_servicio.id})
    @compania = Compania.find(:first)
    @cliente = Cliente.all(:conditions => {:id => session[:cliente_id]} ).first
    @total = @orden_servicio.total + @orden_servicio.iva
    @titulofactura = "Factura"
    @datosfactura = "\n\n\n\n\n\n" + "Nombre: " + session[:cliente_nombre] + "\n" + "Apellido: " + session[:cliente_apellido]+ "\n" + "Correo: " + session[:cliente_correo] + "\n\n\n" + "Compania " + @compania.nombre + "\n\n\n"
    Prawn::Document.generate('Factura.pdf', :page_layout => :portrait) do |pdf|
      pdf.font "#{Prawn::BASEDIR}/data/fonts/Dustismo_Roman.ttf"
      logo = "#{RAILS_ROOT}/public/images/LogoFactura.jpg"
      pdf.image logo, :at => [5,750], :width => 300
      pdf.stroke do
        pdf.rectangle [5,650], 530, 600
      end
      pdf.indent(50,50) do
        pdf.text "\n\n\n" + @titulofactura, :align => :center
      end

      pdf.indent(375) do
        pdf.text "\n\n\n" + "#{Time.now.utc}"
      end

      pdf.indent(50) do
        pdf.text @datosfactura
        data = [["Factura#:" ,"000"+"#{@orden_servicio.id}"],
          ["Fecha:", "#{@orden_servicio.fecha_orden}"],
          ["Receptor:", "#{@orden_servicio.nombre_receptor} #{@orden_servicio.apellido_receptor}"]]
        pdf.table(data,:cell_style => { :borders => [] }) do |tablaFactura|
          tablaFactura.rows(1..3)
        end

        pdf.image open("#{@qr}"), :at => [350,200], :width => 125
      end
    end
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @orden_servicio }
      format.pdf { render :format => false, :attachment => false }
    end
  end

  # GET /orden_servicios/new
  # GET /orden_servicios/new.xml
  def new
  	@direccions = Direccion.all(:conditions => {:cliente_id => session[:cliente_id]} )
    @orden_servicio = OrdenServicio.new
    @orden_servicio.paquetes.build
    @orden_servicio.compania_id = params['1']
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @orden_servicio }
    end
  end

  # GET /orden_servicios/1/edit
  def edit
    @orden_servicio = OrdenServicio.find(params[:id])
  end

  # POST /orden_servicios
  # POST /orden_servicios.xml
  def create
    @orden_servicio = OrdenServicio.new(params[:orden_servicio])

    respond_to do |format|
      if @orden_servicio.save
        flash[:notice] = 'La orden de servicio fue creada exitosamente'
        format.html { redirect_to(@orden_servicio) }
        format.xml  { render :xml => @orden_servicio, :status => :created, :location => @orden_servicio }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @orden_servicio.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /orden_servicios/1
  # PUT /orden_servicios/1.xml
  def update
    @orden_servicio = OrdenServicio.find(params[:id])
    respond_to do |format|
      if @orden_servicio.update_attributes(params[:orden_servicio])
        flash[:notice] = 'La orden de servicio ha sido actualizada exitosamente'
        format.html { redirect_to(@orden_servicio) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @orden_servicio.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /orden_servicios/1
  # DELETE /orden_servicios/1.xml
  def destroy
    @orden_servicio = OrdenServicio.find(params[:id])
    @orden_servicio.destroy

    respond_to do |format|
      format.html { redirect_to(orden_servicios_url) }
      format.xml  { head :ok }
    end
  end

  def modificar_ordenes
    @orden_servicio = params[:enviar]
    #    @empleado = params[:despachar]
    @orden_servicio.each do |orden_servicio|
      if orden_servicio[1] != 'no'
        @orden_servicio = OrdenServicio.find(orden_servicio[1])
        @orden_servicio.estatus = "Asignada para Recoleccion"
        #        @orden_servicio.empleado_id =
        @orden_servicio.save
      end
    end
    if (@orden_servicio == nil)
      flash[:notice] = 'No ha seleccionado ninguna orden'
      redirect_to(asignar_rutas_path)
    else
      flash[:notice] = 'La orden fue asignada exitosamente'
      redirect_to(asignar_rutas_path)
    end
  end

  def recolectar
    @trackingid = params[:tracking]
    sql = ActiveRecord::Base.connection();
    sql.execute "SET autocommit=0";
    sql.begin_db_transaction
    id, value =
    sql.update "UPDATE `basedatosggn`.`orden_servicios` SET `estatus` = 'Recolectada' WHERE `orden_servicios`.`traking` ="+@trackingid.to_s+""
    sql.commit_db_transaction
    value;
  end
end
